import Vue from 'vue'
import Vuex from 'vuex'
import userModule from './modules/user-module.js'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    // 全局共享数据
    counter: 0
  },
  getters: {
    // 全局共享数据的计算属性
    squareOfCounter(state) {
      return Math.pow(state.counter, 2)
    }
  },
  mutations: {
    // 修改全局共享数据
    setCounter(state, counter) {
      state.counter = counter
    },
    increment(state) {
      state.counter++
    },
    incrementWithStep(state, step) {
      state.counter += step
    }
  },
  actions: {
    // 异步修改全局共享数据
    incrementAsync(context) {
      setTimeout(() => {
        context.commit('increment')
      }, 1000)
    },
    incrementWithStepAsync(context, step) {
      setTimeout(() => {
        context.commit('incrementWithStep', step)
      }, 1000)
    }
  },
  modules: {
    userModule
  }
})

export default store
